File storage is traditionally implemented as non-volatile block-based storage media such as magnetic hard-disk drive (HDD), Flash-based solid-state drive (SSD) or Flash-based non-volatile memory SSD (NVMe), and employed as a peripheral device to one or more computing devices. Such technologies provide affordable capacity, but at latency longer in many orders of magnitudes as compared to the latency of volatile memory such as dynamic random-access memory (DRAM).
Newly developed storage media technologies are currently becoming available, which overcome this problem. For example, a Non-Volatile Dual In-line Memory Module (NVDIMM) is a computer random access memory (RAM) that retains data even when electrical power is stopped due to normal system shutdown, an unexpected power loss, system crash or any other reason. Currently the main type of available NVDIMM cards include: NVDIMM-N which is a byte-addressable memory-mapped device, typically comprised of capacitor or battery backed DRAM and responds at memory speeds. Several storage-class memory-based NVDIMMs are planned to reach the market around 2018, these for example include MRAM, 3DXPoint and ReRAM based NVDIMMs planned by vendors such as Everspin™, Intel™, Western Digital™ and Sony™.
Traditional file systems and storage solutions rely on a block Application Program Interface (API). Emerging NVDIMMs technologies are faster, but their impact can extend to changing the mode of operation. Their byte addressability further opens an opportunity to optimize the entire algorithm, not just run the same ones faster.
Light-weight clones and Copy-on-write (CoW) is a technique that may be used to implement clones, snapshots, backup, disaster recovery, de-duplication, cloud offload and other features. CoW is a space and time efficiency optimization strategy that takes advantage of the fact that it is not necessary to immediately create a new copy of that information. Instead, a link to the same data is created, with the provision that on the first occasion in which one of the logical copies needs to be modified, space for the different copy is allocated and modified on demand. When there are many separate processes all using the same large data structure, each with a small likelihood of having to modify it at all, or to modify only a small part of it, then it is possible to make significant resource savings by sharing physical space across logical copies.